package com.battle.service.service.in;

import com.battle.pojo.param.personWarCase.GetPersonWarCaseListParam;
import jakarta.servlet.http.HttpServletResponse;
import nirvana.core.domains.vo.PageResult;
import com.battle.pojo.param.dataLabelingTask.*;
import com.battle.pojo.vo.dataLabelingTask.*;

import java.io.IOException;
import java.util.List;


/**
 * 【描 述】：数据标注任务服务
 * 【环 境】：J2SE
 * 【详 细】：
 */
public interface DataLabelingTaskService {

    /**
     * 创建数据标注任务
     *
     * @param param
     */
    void createDataLabelingTask(CreateDataLabelingTaskParam param);

    /**
     * 数据标注
     *
     * @param param
     */
    void editDataLabelingTask(EditDataLabelingTaskParam param);

    /**
     * 移除数据标注任务
     *
     * @param id
     */
    void removeDataLabelingTask(Long id);

    /**
     * 启动/禁用数据标注任务
     *
     * @param id
     */
    void enabledDataLabelingTask(Long id);

    /**
     * 获取数据标注任务详情
     *
     * @param id
     * @return
     */
    GetDataLabelingTaskVo getDataLabelingTask(Long id);

    /**
     * 获取数据标注任务列表
     *
     * @param param
     * @return
     */
    PageResult<GetDataLabelingTaskListVo> getDataLabelingTaskList(GetDataLabelingTaskListParam param);


    /**
     * 导出数据标注任务
     * @param param
     * @param response
     * @throws IOException
     */
    void export(GetDataLabelingTaskListParam param, HttpServletResponse response) throws IOException;


    /**
     * 获取数据标注任务下拉列表
     *
     * @param param
     * @return
     */
    List<GetDataLabelingTaskDownListVo> getDataLabelingTaskDownList(GetDataLabelingTaskDownListParam param);

    /**
     * 获得所有的任务数据
     * @return
     */
    GetDataLabelingGraphVo getDataLabelingGraph();
}